<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
        1. throw 抛出错误，会调用 p.catch 捕捉错误，会中断Promise回调函数中代码的执行（同步）
        2. p.catch 会捕捉 抛出的错误对象，错误对象被保存在 p.catch 回调函数从参数中。 
        3. reject可以替换 throw 抛错，reject 的实参会传递给p.catch 回调函数。不会中断 Promise 回调函数其他代码的执行。
      */
      const p = new Promise(function (resolve, reject) {
        const age = -1;
        if (age < 0) {
          // throw new Error("年龄范围错误");
          reject(new Error("年龄范围错误"));
        }
        console.log("...");
      });

      p.then(() => {
        console.log("then");
      })
        .catch((e) => {
          console.log(e.message);
        })
        .finally(() => {
          console.log("finally");
        });
    </script>
  </body>
</html>
